/*----------------------------------------------------------
* FILE: FormatTypes.java
* LOGICAL NAME: FormatTypes
* PRODUCT: bila-framework
*----------------------------------------------------------
* MODIFICATIONS
* DATE Oct 10, 2011
* AUTHOR wjuarez
*----------------------------------------------------------
*/

package bila.framework.commons;

import java.text.SimpleDateFormat;
import java.util.Date;

/**
 * @author WJuarez
 * <b>Created by </b>wjuarez
 * <b>for</b> bila-framework
 * <b>package</b> bila.framework.commons
 * <b>on</b> Oct 10, 2011 5:55:11 PM
 * <b>Purpose</b> 
 * <p>
 *		Metodos para conversion de datos
 * </p>
 */
public class FormatTypes {

	/**
	 * Convierte un entero a String
	 * @param number que se desea convertir
	 * @return el par·metro en tipo String, 	si da error devuelve ""
	 */
	public static String intToString(int number){
		try{
			return String.valueOf(number);
		}catch(Exception e){
			e.printStackTrace();
			return "";
		}
	}
	
	/**
	 * Convierte un String a entero
	 * @param text que se desea convertir
	 * @return el par·metro en tipo entero, si da error devuelve -999999
	 */
	public static int stringToInt(String text){
		try{
			return new Integer(text);
		}catch(Exception e){
			e.printStackTrace();
			return -999999;
		}
	}

	/**
	 * Convierte una cadena a tipo fecha
	 * @param date cadena que se desea convertir
	 * @return el par·metro en tipo fecha, si da error devuelve nulo
	 */
	public static Date stringToDate(String date){
		try{			
			SimpleDateFormat sdf = new SimpleDateFormat(Constants.DATE_FORMAT);
			Date newDate = sdf.parse(date);
			return newDate;			
		}catch(Exception ex){
			ex.printStackTrace();
			return null;
		}		
	}
	
	/**
	 * Convierte de fecha a String
	 * @param date fecha que se desea convertir
	 * @return el par·metro en tipo String, si ocurre un error devuelve ""
	 */
	public static String dateToString(Date date){
		try{
			if(date == null) return "";
			SimpleDateFormat sdf = new SimpleDateFormat(Constants.DATE_FORMAT);
			String fecha = sdf.format(date); 
			return fecha;
		}catch(Exception e){
			e.printStackTrace();
			return "";
		}
	}
	
	/**
	 * Convierte de entero a double
	 * @param number par·metro que se desea convertir
	 * @return el par·metro en formato double, si da error devuelve -999999
	 */
	public static double intToDouble(int number){
		try{
			return new Double(number);
		}catch(Exception e){
			e.printStackTrace();
			return -999999;
		}
	}
	
	/**
	 * Convierte de double a entero
	 * @param number par·metro que se desea convertir
	 * @return el par·metro en formato entero, si da error devuelve -999999
	 */
	public static int doubleToInt(double number){
		try{
			return new Integer(String.valueOf(number));
		}catch(Exception e){
			e.printStackTrace();
			return -999999;
		}
	}
	
	/**
	 * Convierte una fecha de tipo YYYY-MM-DD 00:00:00.0
	 * a DD/MM/YYYY
	 * @param date
	 * @return String con formato de fecha definido
	 */
	public static String getFormatDate(String date){
		try{
			String[] sep = split(date, " ");
			String[] dates = split(sep[0], "-");
			String now = dates[2] + "/" + dates[1] + "/" + dates[0];
			return now;			
		}catch(Exception e){
			e.printStackTrace();
			return "";
		}
		
	}
	
	/**
	 * Divide la palabra segun el parametro Regex
	 * @param text
	 * @param regex
	 * @return String[]
	 */
	private static String[] split(String text, String regex) throws Exception{
		return text.split(regex);
	}
}
